读书笔记 | 图解《HTTP》

图解HTTP读书笔记,这里你会知道工作中经常看到HTTP协议,长连接和短连接区别,HTTP和HTTPS的联系

了解Web和网络基础

  • web实现网络互联,三项WWW构建技术:文本标记语言(HTML)、文档传输协议(HTTP)、文档的统一资源定位符(地址URL)

  • TCP/IP 四层协议结构

    • 应用层 : 决定了向用户提供应用服务时通信的活动。 比如,FTP(File Transfer Protocol,文件传输协议)和 DNS ( Domain Name System,域名系统)、HTTP协议

    • 传输层 : 提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission Control Proctocal,传输控制协议)和UDP(User Data Protocol, 用户数据报协议)。

    • 网络层(路由器): IP协议

    问题: IP协议和IP地址的区别

    IP协议的作用是把各种数据包传送给对方。这需要满足很多条件。其中两个重要的条件是IP地址和MAC地址(Media Access Control Address)

    IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP可变换,但MAC地址基本上不会更改。

    IP间的通信依赖MAC地址。在网络上,通常是经过多台计算机和网络设备中转才能连接对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这时,会采用ARP协议(Address Resolution Protocol )。ARP协议是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。

    • 链路层 : 用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card, 网络适配器,即网卡)及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围之内。
  • TCP三次握手:确保可靠性

  • DNS服务:域名到IP地址之间的转化

upload successful

  • URL 和 URI

URL(统一资源定位符) 就是我们输入浏览器中的地址,是表示资源地址;URI(统一资源标示符)某个协议方案标示的资源定位标识符,是标识资源;可见URL是URI的子集
以下列举常见的URI的例子:

upload successful

  • URI格式涵盖绝对URI、绝对URL、相对URL

upload successful

HTTP协议

  • HTTP概述:

    • 基于TCP/IP的超文本传输协议
    • 解决本传输问题——HTTP/0.9 (只有GET 法)
    • 解决多类型传输 ——HTTP/1.0
    • 解决持久连接问题——HTTP/1.1
    • 解决安全传输问题——HTTPS
  • HTTP1.0 特点

    • 服务于应用层
    • 简单快速:基于TCP、客户端请求&&服务端相应
    • 无状态:引入Cookie 实现持久化
    • 不持久:(HTTP1.1引入持久连接,所谓持久化就是客户端、服务端任意一方不断开链接,则保持TCP链接。它的好处在于减少了 TCP 连接的重复建立和断开所造成的 额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使 HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了)
    • 管线化:并行化,可以理解为异步,即不需要等待上一个请求结果,进行新的请求
    • 支持持客户/服务器模式
  • HTTP报文

    • 请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段和内容实体构成的。

    • 响应报文基本上由协议版本、状态码(表示请求成功或失败的数字 代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

HTTP 报文内的 HTTP 信息

  • HTTP 报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。

    • 首部字段 :一般有 4 种首部,分别是:通用首部、请求首部、响应首部和实体首部。
    • 报文主体 :数据
  • 提高传输速度

  • 常用的内容编码有以下几种
    • gzip(GNU zip)
    • compress(UNIX 系统的标准压缩)
    • deflate(zlib)
    • identity(不进行编码)
      • 分块传输编码
  • 多种数据的对象集合:

MIME(Multipurpose Internet Mail Extensions,多用途因特网 邮件扩展)
机制

  • 范围请求(Range Request):指定范围发出的请求(例如断点续传是一种应用)

  • 内容协商(Content Negotiation):

客户端和服务端就响应的资源内容进行交涉,然后提供给客户最合适的资源。比如PC版还是手机版,英文版还是汉文版

返回结果的 HTTP 状态码

1XX :信息性状态吗 表示请求正在处理

2XX :成功 如:200

3XX :重定向

4XX :客户端请求错误 400 错误请求(不理解) 403 禁止 404 未找到

5XX :服务器错误 500 服务器内部错误 503 服务不可用

与HTTP协作的Web服务器

  • 单台虚拟主机实现多个域名

  • 通信数据转发程序:代理、网关、隧道

    • 代理:转发时,需要附加 Via 首部字段以标记出经过的主机信息。目的利用缓存减少网络带宽流量;网络控制,获取访问日志等

      代理可按是否使用缓存和是否修改报文分类

    • 网关:网关是转发其他服务器通信数据的服务器,接收从客户端发来的请求时,他就像自己拥有资源的源服务器一样对请求进行处理。因此,利用网关可以由 HTTP 请求转化为其他协议通信。

      网关和代理的区别是网关能使通信线路上的服务器提供非HTTP协议服务。利用网关能提高通信的安全性,因为可以在客户端和网关线路上加密以确保链接的安全。

    • 隧道:隧道的目的是确保客户端能与服务器进行安全的通信。(SSL加密等加密手段)

      隧道本身不解析HTTP请求,只是中转。

  • 缓存
    • 缓存指代理服务器或客户端本地磁盘保存的资源副本。利用缓存可以减少对源服务器的访问,也节省了通信流量和通信时间。

HTTP头部

介绍HTTP各种头部,见wiki
通过charles抓包可以看到头部信息
upload successful

确保 Web 安全的 HTTPS

HTTP缺点

  • 通信使用明文(不加密),内容可能会被窃听

upload successful

防范:加密:通讯加密(HTTPS) && 内容加密
  • 不验证通信方的身份,因此有可能遭遇伪装

upload successful

防范:证书(SSL)
  • 无法证明报文的完整性,所以有可能已遭篡改。

    解决方案:在报文中增加MAC(Mesage Authentication Code),保证完整性

    通常用MD5和SHA-1散列值校验以及文件的数字签名

HTTPS

  • HTTP+ 加密 + 认证 + 完整性保护 =HTTPS

  • HTTPS 是身披 SSL 外壳的 HTTP

    HTTPS是HTTP通信接口部分用SSL和TSL协议代替而已。通常,HTTP直接和TCP通信。当使用SSL时,则变为先和SSL通信,再由SSL和TCP通信。

  • 解决方案:

    • 证书:证书由值得信任的第三方机构颁发,只要能确认通信方持有的证书,就可判断对方真实意图。

      EV SSL证书(Extended Validation SSL Certificate)
      该证书既可证明服务器是否规范,还可确认服务器运营企业是否真实存在。

      客户端证书:需要购买,按装机量收取。比价麻烦。

    • 密钥 : 对称加密 && 非对称加密 (数字认证机构)

  • HTTPS 采用混合加密机制:HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。

  • SSL 速度慢

    • 通信慢。因为需增加SSL通信,增加通信量。和HTTP相比,网络负载可能会变慢2到100倍。

    • 大量消耗CPU及内存资源,导致处理速度变慢。因为SSL使用时,在服务器和客户端都要进行加密和解密的运算处理,比起HTTP会更多消耗服务器和客户端硬件资源。

upload successful

确认访问用户身份的认证

  • 需要认证的信息

upload successful

  • HTTP/1.1 使用的认证方式如下所示。

    • BASIC 认证(基本认证)
    • DIGEST 认证(摘要认证)
    • SSL 客户端认证
    • FormBase 认证(基于表单认证)

基于 HTTP 的功能追加协议

  • HTTP的瓶颈

upload successful

  • AJAX

只刷新局部Web内容,但是未解决HTTP的瓶颈

  • Comet

延时响应,做服务器push功能,导致每次链接的时间变长,但是未解决HTTP的瓶颈

  • SPDY:消除性能瓶颈,缩短加载时间

    SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输 层之间通过新加会话层的形式运作(实际是在HTTP和SSL之间新增新对话)。考虑到安全性,SPDY默认使用SSL。使用 SPDY 后,HTTP 协议额外获得以下功能。

    • 多路复用流
    • 赋予请求优先级
    • 压缩 HTTP 首部
    • 推送功能
    • 服务器提示功能
  • 使用浏览器进行全双工通信的 WebSocket

    • 推送功能
    • 减少通信量

upload successful

  • HTTP 2.0

upload successful

  • webDev : web服务器管理文件

构建 Web 内容的技术

web开发技术(略)

Web 的攻击技术

  • 针对 Web 应用的攻击模式
    • 主动攻击
    • 被动攻击
  • 以服务器为目标的主动攻击

具有代表性的攻击是 SQL 注入攻击和 OS 命令注入攻击。

  • 以服务器为目标的被动攻击

具有代表性的攻击是跨站脚本攻击和跨站点请求伪造。